// 引入 dataBase 实例对象
const dataBase = require('../database')

// 调用 jsonwebtoken 包 提供的 sign() 方法，将用户的信息加密成 JWT 字符串，响应给客户端:
const jsonwebtoken = require('jsonwebtoken')
const JWTConfig = require('../JWT_Config')



// 定义一个 login 的处理函数
function Login(req, res){

    // 定义一个查询用户输入的数据是否存在的 SQL
    const SelectUser = 'select userName, passWord from user where userName = ?';

    if(req.body.username === '' || req.body.password === ''){
        return res.send({
            status: 404,
            message: '请输入账号密码！'
        })
    }

    // 进行用户的登入判断
    dataBase.query(SelectUser, req.body.username, (err, results) => {

        if(err){
            return res.send({
                status: 404,
                message: '未知错误！请稍后重试！'
            })
        }

        if(!results[0]){
            return res.send({
                status: 404,
                message: '用户不存在, 请注册新用户！'
            })
        }

        if(req.body.password !== results[0].passWord){
            return res.send({
                status: 404,
                message: '密码错误！'
            })
        }

        // 生成 Token 字符串
        // const tokenStr = jsonwebtoken.sign({username: req.body.username}, JWTConfig.secretKey, {expiresIn: JWTConfig.expiresIn})
        const tokenStr = jsonwebtoken.sign({username: req.body.username}, JWTConfig.secretKey)

        res.send({
            status: 200,
            tokenStr: tokenStr,
            message: '欢迎用户 ' + req.body.username + ' 的使用！'
        })
        
    })


    // console.log(req.body)
    // res.send({
    //     status: 200
    // })
}


// 定义一个 Register 的处理函数
function Register(req, res){
    const userInfo = req.body

    // 定义一条添加用户信息的 SQL
    const addUserSql = 'insert into user (userName, passWord, name, age, sex, birthday, address, usertype) values(?, ?, ?, ?, ?, ?, ?, ?)'
    // 定义一条查询xin账户是否存在的 SQL
    const SelectUsered = 'select * from user where userName = ?'


    if(userInfo.username === '' || userInfo.password === ''){
        return res.send({
            status: 404,
            message: '账号密码不能为空！'
        })
    }


    if(userInfo.name === '' || userInfo.age === '' || userInfo.sex === '' || userInfo.birthday === '' || userInfo.address === ''){
        return res.send({
            status: 404,
            message: '请将信息填完整！'
        }) 
    }

    if(userInfo.usertype === '1'){
        return res.send({ 
            status: 404,
            message: '注册管理员账户，联系邮箱 ：2974099467@qq.com  '
        })
    } 

    if(userInfo.usertype === ''){
        return res.send({
            status : 404,
            message: '用户类型必选！'
        })
    }

    // 判断该账号是否存在
    dataBase.query(SelectUsered, userInfo.username, (err, results) => {
         if(err){
            return res.send({ 
                status: 404,
                message: '未知错误1,请稍后重试！ '
            })
        }

        if(results[0]){
            return res.send({
                status: 404,
                message: '该账号已存在！'
            })
        }

        // 进行新用户数据添加
        dataBase.query(addUserSql, [userInfo.username, userInfo.password, userInfo.name, userInfo.age, userInfo.sex, userInfo.birthday, userInfo.address, userInfo.usertype], (err, results) => {
            if(err){
                return res.send({ 
                    status: 404,
                    message: '未知错误,请稍后重试！ '
                })
            }
    
            if(results.affectedRows === 1){
                res.send({
                    status: 200,
                    message: '注册成功！'
                })
            }
        })
    })
}


// 定义一个 updateUser 的处理函数
function updateUser(req, res){
    // 定义一条修改用户信息的 SQL
    const updateUserSql = 'update user set name = ? , age = ? ,sex = ? , birthday = ? , address = ? where id = ?'
    const userNewInfo = req.body

    // 进行操作数据库
    dataBase.query(updateUserSql, [userNewInfo.name, userNewInfo.age, userNewInfo.sex, userNewInfo.birthday, userNewInfo.address, userNewInfo.id], (err, results) => {
        if(err){
            return res.send({
                status: 404,
                message: '未知错误，请稍后重试！'
            })
        }

        if(results.affectedRows === 1){
            res.send({
                status: 200,
                message: '修改成功'
            })
        }
    })
}


// 定义一个 deleteUser 的处理函数
function deleteUser(req, res){
    // 定义一条删除用户信息的 SQL
    const deleteUserSql = 'delete from user where id = ?'
    const userId = req.body.id

    // 进行操作数据库
    dataBase.query(deleteUserSql, userId, (err, results) => {
        if(err){
            return res.send({
                status: 404,
                message: '未知错误，请稍后重试！'
            })
        }

        if(results.affectedRows === 1){
            res.send({
                status: 200,
                message: '删除成功'
            })
        }
    })
}

module.exports = {
    Login,
    Register,
    updateUser,
    deleteUser
}